﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using DblogStudio.DAL.Models;

namespace DblogStudio.BLL
{
    public partial class BizLichSuBaoTri
    {
        //public static List<LichSuBaoTri> GetList()
        //{
        //    using (var db = CEMS4UG_DHKHContext.GetContext())
        //    {
        //        return db.LichSuBaoTriDbSet.OrderBy(e => e.NgayBaoTri).ToList();
        //    }
        //}

        public static List<LichBaoTriCustom> GetList()
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                var ls = db.LichSuBaoTriDbSet.
                    Include("ChiTietMay").
                    Include("ChiTietMay.BoPhanMay").
                    Include("ChiTietMay.BoPhanMay.MaySanXuat").
                    Include("ChiTietMay.BoPhanMay.MaySanXuat.CongDoanSanXuat")
                    .OrderBy(e => e.NgayBaoTri)
                    .Select(e => new LichBaoTriCustom
                    {
                        _TenBoPhanMay = e.ChiTietMay.BoPhanMay.TenBoPhanMay,
                        _TenChiTietMay = e.ChiTietMay.TenChiTietMay,
                        _TenCongDoan = e.ChiTietMay.BoPhanMay.MaySanXuat.CongDoanSanXuat.TenCongDoanSanXuat,
                        _TenMaySanXuat = e.ChiTietMay.BoPhanMay.MaySanXuat.TenMaySanXuat,
                        ChuKy = e.ChuKy,
                        GhiChu = e.GhiChu,
                        MaChiTietMay = e.MaChiTietMay,
                        MaLichBaoTri = e.MaLichSuBaoTri,
                        MaNhiemVuBaoTri = e.MaNhiemVuBaoTri,
                        NgayBaoTri = e.NgayBaoTri,
                        TenNguoiBaoTri = e.AppUser.FullName,
                        HanBaoTri = e.HanBaoTri
                    })
                    .ToList();
                return ls;
            }
        }


        public static List<LichSuBaoTri> GetList(string maChiTietMay)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                return db.LichSuBaoTriDbSet.Where(e => e.MaChiTietMay == maChiTietMay).OrderBy(e => e.NgayBaoTri).ToList();
            }
        }

        public static LichSuBaoTri GetByID(string maLichSuBaoTri)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                return db.LichSuBaoTriDbSet.Where(e => e.MaLichSuBaoTri == maLichSuBaoTri).FirstOrDefault();
            }
        }

        public static CODE_RESULT_RETURN Add(LichBaoTriCustom obj, string ghiChu)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                LichSuBaoTri lichSu = new LichSuBaoTri();
                lichSu.MaChiTietMay = obj.MaChiTietMay;
                lichSu.MaNhiemVuBaoTri = obj.MaNhiemVuBaoTri;
                lichSu.UserName = DblogStudio.GUI.FormMain.NguoiSuDung.UserName;
                lichSu.NgayBaoTri = DateTime.Now;
                lichSu.HanBaoTri = obj.NgayBaoTri;
                lichSu.GhiChu = ghiChu;
                lichSu.ChuKy = obj.ChuKy;
                lichSu.MaLichSuBaoTri = Guid.NewGuid().ToString();
                try
                {
                    db.LichSuBaoTriDbSet.Add(lichSu);
                    db.SaveChanges();
                    NhatKyHoatDong nhatKy = new NhatKyHoatDong();
                    BizNhatKyHoatDong.InitData<LichBaoTri>(nhatKy, null, lichSu.MaLichSuBaoTri, LOAIDOITUONG.LỊCH_SỬ_BẢO_TRÌ, LOAITHAOTAC.Thêm);
                    BizNhatKyHoatDong.Add(nhatKy, obj);
                    return CODE_RESULT_RETURN.ThanhCong;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.ToString());
                    return CODE_RESULT_RETURN.ThatBai;
                }
            }
        }

        public static CODE_RESULT_RETURN Add(LichBaoTri obj, string ghiChu)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                LichSuBaoTri lichSu = new LichSuBaoTri();
                lichSu.MaChiTietMay = obj.MaChiTietMay;
                lichSu.MaNhiemVuBaoTri = obj.MaNhiemVuBaoTri;
                lichSu.UserName = DblogStudio.GUI.FormMain.NguoiSuDung.UserName;
                lichSu.NgayBaoTri = DateTime.Now;
                lichSu.HanBaoTri = obj.NgayBaoTri;
                lichSu.GhiChu = ghiChu;
                lichSu.ChuKy = obj.ChuKy;
                lichSu.MaLichSuBaoTri = Guid.NewGuid().ToString();
                try
                {
                    db.LichSuBaoTriDbSet.Add(lichSu);
                    db.SaveChanges();
                    NhatKyHoatDong nhatKy = new NhatKyHoatDong();
                    BizNhatKyHoatDong.InitData<LichBaoTri>(nhatKy, null, lichSu.MaLichSuBaoTri, LOAIDOITUONG.LỊCH_SỬ_BẢO_TRÌ, LOAITHAOTAC.Thêm);
                    BizNhatKyHoatDong.Add(nhatKy, obj);
                    return CODE_RESULT_RETURN.ThanhCong;
                }
                catch (Exception ex)
                {
                    throw new Exception(ex.ToString());
                    return CODE_RESULT_RETURN.ThatBai;
                }
            }
        }

        public static CODE_RESULT_RETURN Delete(string maLichSuBaoTri)
        {
            using (var db = CEMS4UG_DHKHContext.GetContext())
            {
                var may = db.LichSuBaoTriDbSet.Where(e => e.MaLichSuBaoTri == maLichSuBaoTri).FirstOrDefault();
                db.LichSuBaoTriDbSet.Remove(may);
                db.SaveChanges();
                NhatKyHoatDong nhatKy = new NhatKyHoatDong();
                BizNhatKyHoatDong.InitData(nhatKy, may, may.MaLichSuBaoTri, LOAIDOITUONG.LỊCH_SỬ_BẢO_TRÌ, LOAITHAOTAC.Xóa);
                BizNhatKyHoatDong.Add<NhiemVuBaoTri>(nhatKy, null);
                return CODE_RESULT_RETURN.ThanhCong;
            }
        }
    }

}
